package tw.cuttle.core.spring;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.beans.factory.xml.BeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import tw.cuttle.CuttleContext;
import tw.cuttle.bean.ActionException;
import tw.cuttle.bean.Env;
import tw.cuttle.bean.Form;
import tw.cuttle.bean.Forms;
import tw.cuttle.bean.Global;
import tw.cuttle.bean.Layout;
import tw.cuttle.bean.ProcessException;
import tw.cuttle.bean.Resource;
import tw.cuttle.bean.Resources;
import tw.cuttle.bean.Setting;
import tw.cuttle.bean.Template;
import tw.cuttle.core.CuttleConfigurationParser;

public class CuttleSettingBeanDefinitionParser implements BeanDefinitionParser {
    private Log LOGGER=LogFactory.getLog(CuttleSettingBeanDefinitionParser.class);
    public BeanDefinition parse(Element element, ParserContext ctx) {
        Setting setting = CuttleConfigurationParser.getSetting(element);
        RootBeanDefinition beanDef = new RootBeanDefinition();
        beanDef.setBeanClass(Setting.class);
//        beanDef.getPropertyValues().addPropertyValue("Layout", setting.getLayout());
//        beanDef.getPropertyValues().addPropertyValue("Env", setting.getEnv());
//        beanDef.getPropertyValues().addPropertyValue("Resources", setting.getResources());
//        beanDef.getPropertyValues().addPropertyValue("Forms", setting.getForms());
//        beanDef.getPropertyValues().addPropertyValue("Global", setting.getGlobal());
        CuttleContext.getBeanHolder().setSetting(setting);
//        
//        String id = element.getAttribute("id");
//
//        if(id != null){
//            BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDef, id);    
//            BeanDefinitionReaderUtils.registerBeanDefinition(holder, ctx.getRegistry());
//        }

        return beanDef;
    }

    

}
